perm filename COMSUB.SAI[SYS,ALS] blob sn#001163 filedate 1972-10-19 generic text, type T, neo UTF8
00005	ENTRY WAIT;
00010	BEGIN "COMSUB"
00020	
00030	DEFINE ⊃="COMMENT";
00040	REQUIRE "PROLOG.HDR[1,PDQ]" SOURCE_FILE;
00050	
00060	INTERNAL PROCEDURE WAIT(INTEGER SECS);CALL(SECS,"SLEEP");
00070	
00080	INTEGER FOO;
00090	DEFINE CR="'15",LF="'12",TAB="'11",SPACE="'40",CRLF="CR&LF";
00100	
00110	INTEGER DATE,TIME;
00120	DEFINE GETIME="BEGIN DATE←CALL(0,""DATE""); TIME←CALL(0,""TIMER"")%60; END";
00130	
00140	INTERNAL STRING PROCEDURE DATIM; ⊃ Returns string equivalent to monitor DAYTIME command;
00150		BEGIN INTEGER DAY,YR,HRS,MIN,SEC;
00160			PRELOAD_WITH "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG",
00170					"SEP","OCT","NOV","DEC";
00180			OWN STRING_ARRAY MONTHS[0:11];
00190		DAY←(DATE MOD 31)+1;DATE←DATE%31;
00200		YR←1964+DATE%12;SEC←TIME MOD 60;TIME←TIME%60;MIN←TIME MOD 60;HRS←TIME%60;
00210		SETFORMAT(-2,0);
00220		RETURN(CVS(DAY)&"-"&MONTHS[DATE MOD 12]&"-"&CVS(YR)&"   "&CVS(HRS)&CVS(MIN)&":"&CVS(SEC));
00230		END "DATIM";
00240	
00250	INTERNAL REAL PROCEDURE RUNTIM;RETURN(CALL(0,"RUNTIM"));
00260	INTERNAL REAL PROCEDURE ALLTIM;RETURN(CALL(0,"TIMER")/60);
00270	INTERNAL REAL RTIM,ATIM;
00280	INTERNAL PROCEDURE TIMSET;BEGIN RTIM←RUNTIM;ATIM←ALLTIM;END;
00290	INTERNAL PROCEDURE TIMOUT(STRING S);
00300	 BEGIN REAL DRT;SETFORMAT(5,2);
00310		OUTSTR(S&" SECS RUN="&CVF(DRT←RUNTIM-RTIM)&
00320				"  % PROCESSOR="&CVF(100*DRT/(ALLTIM-ATIM))&CRLF);
00330	 END;
00340	
00350	INTERNAL STRING PROCEDURE DATIME;BEGIN GETIME;RETURN(DATIM);END;
00360	
00370	INTERNAL PROCEDURE ERP(STRING S);USERRRR(0,1,S);	⊃ Output error message S;
00380	
00390	INTERNAL INTEGER PROCEDURE LOC(INTEGER X);RETURN(X);
00400	⊃ When combined with the declaration:
00410		EXTERNAL INTEGER PROCEDURE LOC(REFERENCE INTEGER X)
00420	 this procedure gives the address of X;
00430	
00440	INTERNAL INTEGER PROCEDURE MIN(INTEGER X,Y);RETURN(IF X<Y THEN X ELSE Y);
00450	INTERNAL INTEGER PROCEDURE MAX(INTEGER X,Y);RETURN(IF X>Y THEN X ELSE Y);
00460	
     

00010	⊃ *********      Super good TTY I/O functions     ********;
00020	
00030	
00040	INTERNAL PROCEDURE REALOUT(STRING S;REAL X);
00050	⊃ outputs a real number on the TTY;
00060	BEGIN	SETFORMAT(7,2);
00070		OUTSTR(S);
00080		OUTSTR((IF ABS(X)<1@-2 THEN CVE(X) ELSE CVF(X))&"   ");
00090	END;
00100	
00110	INTERNAL STRING PROCEDURE CVS3(INTEGER I);BEGIN SETFORMAT(3,0);RETURN(CVS(I)) END;
00120	
00130	INTERNAL REAL PROCEDURE CVR(STRING S);RETURN(REALSCAN(S,FOO));
00140	⊃ converts a real number to a string;
00150	
00160	INTERNAL STRING PARS;
00170	INTERNAL BOOLEAN XREMEMBER;
00180	
00190	INTERNAL STRING PROCEDURE STRIN(STRING S);
00200	⊃ prints S and returns a string input from the TTY. PARS remembers
00210	everything output and input if REMEMBER=TRUE;
00220	BEGIN	STRING C;OUTSTR(S);SETBREAK(1,LF&TAB&SPACE,CR,"INS");
00230		C←TTYINL(1,FOO); IF XREMEMBER THEN PARS←PARS&S&C&",";RETURN(C) END;
00240	
00250	INTERNAL REAL PROCEDURE INREAL(STRING S);RETURN(CVR(STRIN(S)));
00260	⊃ inputs a real number, remembering with PARS;
00270	
00280	INTERNAL INTEGER PROCEDURE ININT(STRING S);RETURN(CVD(STRIN(S)));
00290	⊃ Inputs an integer, remembering with PARS;
00300	
     

00010	END "COMSUB";